CSRF (Cross-Site Request Forgery) প্রতিরোধ

Microsoft Technologies - এএসপি ডট নেট এমভিসি (ASP.Net MVC) ASP.Net MVC অ্যাপ্লিকেশনের নিরাপত্তা (Security in ASP.Net MVC Applications) |
179
179

CSRF (Cross-Site Request Forgery) একটি সিকিউরিটি আক্রমণ, যা আক্রমণকারী ব্যবহারকারীর পক্ষে অননুমোদিত ক্রিয়া সম্পাদন করার জন্য ডিজাইন করা হয়। এই আক্রমণটি তখন ঘটে যখন একটি বিশ্বাসযোগ্য ব্যবহারকারী একটি ওয়েবসাইটে লগ ইন থাকে এবং আক্রমণকারী সেই ব্যবহারকারীর সেশন ব্যবহার করে একটি ম্যালিশিয়াস রিকোয়েস্ট পাঠায়, যা সাইটের পক্ষ থেকে এক্সিকিউট করা হয়। এর মাধ্যমে আক্রমণকারী সেই ব্যবহারকারীর অনুমতি ছাড়াই কোনো ক্রিয়া সম্পাদন করতে পারে, যেমন: পাসওয়ার্ড পরিবর্তন, ফান্ড ট্রান্সফার, ইত্যাদি।

ASP.Net MVC-তে CSRF আক্রমণ প্রতিরোধের জন্য বেশ কিছু পদ্ধতি রয়েছে। এর মধ্যে প্রধান একটি পদ্ধতি হচ্ছে Anti-Forgery Tokens ব্যবহার করা। এই টোকেনটি ওয়েব ফর্মে একটি লুকানো ফিল্ড হিসেবে যুক্ত থাকে, যা প্রতিটি সাবমিশনের সময় সার্ভারে যাচাই করা হয়।


CSRF আক্রমণ কীভাবে কাজ করে?

  1. একজন ব্যবহারকারী লগ ইন থাকে একটি সাইটে (ধরা যাক Bank.com) এবং তার সেশনের একটি কোকির মাধ্যমে তার পরিচয় xác করা হয়।
  2. আক্রমণকারী একটি ম্যালিশিয়াস ওয়েবসাইট তৈরি করে, যেখানে একটি HTTP রিকোয়েস্ট থাকে, যা Bank.com-এর সাইটে পাঠানো হবে।
  3. ব্যবহারকারী যদি আক্রমণকারী ওয়েবসাইটে গিয়ে সাবমিট করে, তাহলে সেই রিকোয়েস্টটি Bank.com-এর সার্ভারে চলে যাবে, এবং সার্ভারটি ব্যবহারকারীর সেশন এবং অনুমতি ব্যবহার করে রিকোয়েস্টটি প্রক্রিয়াকরণ করবে।

এটি ব্যবহারকারীকে কিছু না জানিয়ে ক্ষতি করতে পারে, যেমন: পাসওয়ার্ড পরিবর্তন, ফান্ড ট্রান্সফার ইত্যাদি।


CSRF প্রতিরোধের পদ্ধতি

1. Anti-Forgery Token ব্যবহার করা

ASP.Net MVC-তে Anti-Forgery Token ব্যবহার করা CSRF আক্রমণ প্রতিরোধের সবচেয়ে জনপ্রিয় পদ্ধতি। এটি নিশ্চিত করে যে ফর্মটি কেবলমাত্র সেই ব্যবহারকারী থেকে পাঠানো হয়েছে, যার সেশন বৈধ।

Anti-Forgery Token এর কাজ কীভাবে করে?

  • যখন একটি ফর্ম সাবমিট করা হয়, তখন Anti-Forgery Token একটি লুকানো ফিল্ড হিসেবে ফর্মে অন্তর্ভুক্ত করা হয়।
  • সার্ভার তখন এই টোকেনটি যাচাই করে, এবং যদি টোকেনটি বৈধ না হয়, তাহলে রিকোয়েস্টটি ব্লক করে দেওয়া হয়।

ASP.Net MVC-তে Anti-Forgery Token প্রক্রিয়া ব্যবহার করার জন্য নিচে কিছু পদক্ষেপ দেওয়া হলো:


2. Anti-Forgery Token ব্যবহার করার ধাপ

Step 1: @Html.AntiForgeryToken() ফর্মে টোকেন যুক্ত করা

প্রথমে আপনার ফর্মের মধ্যে @Html.AntiForgeryToken() ট্যাগটি অন্তর্ভুক্ত করতে হবে, যা সঠিক Anti-Forgery Token তৈরি করবে এবং তা ফর্মে ইনক্লুড করবে।

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()  <!-- Anti-Forgery Token -->
    
    <label for="username">Username:</label>
    <input type="text" id="username" name="username" />
    
    <label for="password">Password:</label>
    <input type="password" id="password" name="password" />
    
    <button type="submit">Submit</button>
}
Step 2: কন্ট্রোলারে [ValidateAntiForgeryToken] অ্যাট্রিবিউট ব্যবহার করা

এখন কন্ট্রোলারের অ্যাকশন মেথডে [ValidateAntiForgeryToken] অ্যাট্রিবিউট যোগ করতে হবে, যা টোকেনের বৈধতা যাচাই করবে।

[HttpPost]
[ValidateAntiForgeryToken]  // Validate Anti-Forgery Token
public ActionResult Login(LoginViewModel model)
{
    if (ModelState.IsValid)
    {
        // Do login logic here
        return RedirectToAction("Dashboard");
    }
    return View(model);
}

এইভাবে, ASP.Net MVC কন্ট্রোলার এবং ভিউ-এর মধ্যে Anti-Forgery Token ব্যবহার করে আপনি CSRF আক্রমণ প্রতিরোধ করতে পারেন। যখন ফর্মটি সাবমিট করা হবে, তখন সার্ভার তা যাচাই করবে এবং যদি টোকেনের মান সঠিক না হয়, তাহলে রিকোয়েস্টটি অগ্রাহ্য করা হবে।


3. Ajax Request-এ Anti-Forgery Token ব্যবহার করা

যদি আপনার অ্যাপ্লিকেশন Ajax ব্যবহার করে ফর্ম সাবমিট বা HTTP রিকোয়েস্ট পাঠায়, তবে আপনাকে Ajax রিকোয়েস্টে Anti-Forgery Token পাঠাতে হবে।

// Add Anti-Forgery Token to the header for Ajax requests
$(function () {
    var token = $('input[name="__RequestVerificationToken"]').val();
    $.ajaxSetup({
        beforeSend: function (xhr) {
            xhr.setRequestHeader('RequestVerificationToken', token);
        }
    });
});

এতে করে, Ajax রিকোয়েস্টের সঙ্গে Anti-Forgery Token সার্ভারে প্রেরণ করা হবে এবং সার্ভার সেটি যাচাই করতে পারবে।


4. কুকি নিরাপত্তা নিশ্চিত করা

CSRF আক্রমণ থেকে রক্ষা পেতে, SameSite কুকি সেটিংস ব্যবহার করা গুরুত্বপূর্ণ। SameSite কুকি প্রোপার্টি সেট করে আপনি কুকি অ্যাক্সেস কন্ট্রোল করতে পারবেন। এর মাধ্যমে, আপনি কুকি কেবলমাত্র সেই ডোমেইনের জন্য পাঠাতে পারবেন যেখানে সেটি তৈরি হয়েছিল।

services.ConfigureApplicationCookie(options =>
{
    options.Cookie.SameSite = SameSiteMode.Strict;  // Only send cookies for same-site requests
});

সারমর্ম

CSRF (Cross-Site Request Forgery) আক্রমণ ব্যবহারকারীর অননুমোদিত ক্রিয়াগুলোর মাধ্যমে অ্যাপ্লিকেশনে নিরাপত্তা ঝুঁকি তৈরি করতে পারে। ASP.Net MVC-তে Anti-Forgery Tokens ব্যবহার করে এবং সঠিকভাবে [ValidateAntiForgeryToken] অ্যাট্রিবিউট প্রয়োগ করে এই ধরনের আক্রমণ প্রতিরোধ করা যায়। এছাড়া SameSite কুকি পলিসি ব্যবহার করে কুকির মাধ্যমে CSRF আক্রমণ আরও প্রতিরোধ করা সম্ভব। এই সিকিউরিটি ব্যবস্থা গুলি ASP.Net অ্যাপ্লিকেশনের নিরাপত্তা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion